/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package vo;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.*;
import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;

@Entity
@Table(name="Compra")
public class CompraVO implements Serializable{
    @Id
    @SequenceGenerator( name = "cod_compra", sequenceName = "cod_compra_seq",allocationSize = 1 )
    @GeneratedValue( strategy = GenerationType.SEQUENCE, generator="cod_compra")
    @Column(name="cod_compra", nullable = false)
    private int codCompra;
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="cod_fornecedor", insertable=true, updatable=true)
    @Fetch(FetchMode.JOIN)
    @Cascade(CascadeType.SAVE_UPDATE)
    private FornecedorVO fornecedor;
    @Column (name = "data_compra")
    @Temporal(TemporalType.DATE)
    private Date dataCompra;
    @Column (name = "forma_pagamento")
    private int formaPagamento;
    @Column (name = "tipo_pagamento")
    private int tipoPagamento;    
    @Column (name = "numero_produtos")
    private int numeroItens;
    @Column (name = "total_compra")
    private double valorTotal;
    @Column(name="ativo")
    private boolean ativo;

    @OneToMany(mappedBy="compra", fetch = FetchType.LAZY)
    @Cascade(CascadeType.SAVE_UPDATE)
    private Collection <ItemCompraVO> itemCompra;

    //Construtor Vazio
    public CompraVO(){

    }

    //Construtor com Parâmetros
    public CompraVO(int codCompra, FornecedorVO fornecedor, Date dataCompra, int formaPagamaneto, int tipoPagamento, int numeroItens, int valorTotal){
        this.setCodCompra(codCompra);
        this.setFornecedor(fornecedor);
        this.setDataCompra(dataCompra);
        this.setFormaPagamento(formaPagamento);
        this.setTipoPagamento(tipoPagamento);
        this.setNumeroItens(numeroItens);
        this.setValorTotal(valorTotal);
        this.ativo=true;
    }

    //Métodos Get() e Set()
    public boolean isAtivo() {
        return ativo;
    }

    public void setAtivo(boolean ativo) {
        this.ativo = ativo;
    }

    public int getCodCompra() {
        return codCompra;
    }

    public void setCodCompra(int codCompra) {
        this.codCompra = codCompra;
    }

    public Date getDataCompra() {
        return dataCompra;
    }

    public void setDataCompra(Date dataCompra) {
        this.dataCompra = dataCompra;
    }

    public int getFormaPagamento() {
        return formaPagamento;
    }

    public void setFormaPagamento(int formaPagamento) {
        this.formaPagamento = formaPagamento;
    }

    public FornecedorVO getFornecedor() {
        return fornecedor;
    }

    public void setFornecedor(FornecedorVO fornecedor) {
        this.fornecedor = fornecedor;
    }

    public int getNumeroItens() {
        return numeroItens;
    }

    public void setNumeroItens(int numeroItens) {
        this.numeroItens = numeroItens;
    }

    public int getTipoPagamento() {
        return tipoPagamento;
    }

    public void setTipoPagamento(int tipoPagamento) {
        this.tipoPagamento = tipoPagamento;
    }

    public double getValorTotal() {
        return valorTotal;
    }

    public void setValorTotal(double valorTotal) {
        this.valorTotal = valorTotal;
    }

    public Collection<ItemCompraVO> getItemCompra() {
        return itemCompra;
    }

    public void setItemCompra(Collection<ItemCompraVO> itemCompra) {
        this.itemCompra = itemCompra;
    }

 }
